package com.run2code.design.structural.proxy;
/**
 * 代理模式 - 代理类
 * 关注公众号【奔跑的码畜】，一起进步不迷路
 *
 * @author 第七人格
 * @date 2023/12/21
 */
public class GenericProxy implements GenericService {
    private GenericService target;

    public GenericProxy(GenericService target) {
        this.target = target;
    }

    @Override
    public Object genericMethod(String methodName, Object[] args) {
        // 在这里实现代理逻辑，例如日志记录、性能监控、鉴权解密等
        System.out.println("[" + methodName + "]进入到代理类中，开始执行代理逻辑...");
        System.out.println("[" + methodName + "]代理逻辑：鉴权");
        System.out.println("[" + methodName + "]代理逻辑：解密");
        System.out.println("[" + methodName + "]代理逻辑执行完毕，开始执行目标方法...");
        return target.genericMethod(methodName, args);
    }
}
